home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / FredFish PD 304.adf / IRA / doargs.c < prev    next >
C/C++ Source or Header  |  1990-01-10  |  4KB  |  188 lines

  1. /*
  2.  *
  3.  *    do_args.c - Argument processing  - WB or CLI
  4.  *
  5.  */
  6.  
  7. #include <exec/types.h>
  8. #include <workbench/workbench.h>
  9. #include <workbench/icon.h>
  10. #include <workbench/startup.h>
  11. #include <stdio.h>
  12. #include "limits.h"
  13.  
  14. /*    The input data    */
  15. extern double apr ;        /* Anual percentage rate  (-a) */
  16. extern double bb ;         /* Beginning balence      (-b) */
  17. extern double ad ;         /* Annual Deposit         (-d) */
  18. extern long  yrs ;         /* Years till retirement  (-y) */
  19.  
  20. extern int batch;
  21.  
  22.  
  23. char *name;
  24.  
  25. double atof();
  26. long atol();
  27.  
  28. extern struct WBStartup *WBenchMsg;
  29. char filename[STRINGMAX];
  30. char title[STRINGMAX];    /* Window title */
  31. char *myname;
  32. void *OpenLibrary();
  33. struct IconBase *IconBase;
  34. long atol();
  35.  
  36. /*
  37.  *  General purpose Workbench argument processing subroutine.
  38.  *  It retrieves arguments from the icon ToolTypes array.
  39.  */
  40.  
  41.  
  42. getWBargs()
  43. {
  44.    struct WBArg *wbArg;
  45.    char   **toolArray;
  46.    char   *string;
  47.    struct DiskObject *diskObj;   
  48.    int any = 0;
  49.  
  50.    if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
  51.       {
  52.       wbArg = WBenchMsg->sm_ArgList;
  53.       diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
  54.       if(diskObj)
  55.          {
  56.          toolArray = diskObj->do_ToolTypes;
  57.          if(string = FindToolType(toolArray,"FILE"))
  58.             {
  59.             if (*string != '\0') 
  60.                 {
  61.                 strncpy(filename, string,STRINGMAX-1);
  62.                 filename[STRINGMAX-1] = '\0';
  63.                 }
  64.             }
  65.          if(string = FindToolType(toolArray,"BALANCE"))
  66.             {
  67.             if (get_float(string,&bb)) any = 1;
  68.             }
  69.          if(string = FindToolType(toolArray,"INTEREST"))
  70.             {
  71.             if (get_float(string,&apr)) any = 1;
  72.             }
  73.          if(string = FindToolType(toolArray,"DEPOSIT"))
  74.             {
  75.             if (get_float(string,&ad)) any = 1;
  76.             }
  77.          if(string = FindToolType(toolArray,"YEARS"))
  78.             {
  79.             yrs = atol(string);
  80.             any = 1;
  81.             }
  82.          FreeDiskObject(diskObj);
  83.          }
  84.       CloseLibrary(IconBase);
  85.       if (any) put_values();
  86.       }
  87. }
  88.  
  89.       
  90. /*
  91.  *  scan the CLI arg array for options
  92.  */
  93.  
  94. getCLIargs(argc,argv)
  95. int argc;
  96. char *argv[];
  97. {
  98.     int len,cnt;
  99.     int any = 0;
  100.     batch = 1;
  101.     for (cnt=1; cnt < argc; cnt++)
  102.         {
  103.         if (argv[cnt][0] != '-')  /* If no '-' it is the filename */
  104.             {
  105.             strncpy(filename, argv[cnt],STRINGMAX-1);
  106.             filename[STRINGMAX-1] = '\0';
  107.             continue;
  108.             }
  109.         else
  110.         {    switch(argv[cnt][1])
  111.             {
  112.                case 'a':
  113.  
  114.                 apr = atof(&argv[cnt][2]) ;
  115.                 if ( apr < MINAPR ||
  116.                      apr > MAXAPR)
  117.                     fatal("Bad -a value: %s", argv[cnt]) ;
  118.                 any++;
  119.                 break ;
  120.  
  121.                case 'b':
  122.                 bb = atof(&argv[cnt][2]) ;
  123.                 if (bb < MINBB)
  124.                     fatal("Bad -b value: %s", argv[cnt]) ;
  125.                 any++;
  126.                 break ;
  127.  
  128.                case 'w':
  129.                    batch = 0;
  130.                 break ;
  131.  
  132.                case 'd':
  133.                 ad = atof(&argv[cnt][2]) ;
  134.                 if (ad < MINAD)
  135.                     fatal("Bad -d value: %s", argv[cnt]) ;
  136.                 any++;
  137.                 break ;
  138.  
  139.  
  140.                case 'y':
  141.                 yrs = atol(&argv[cnt][2]) ;
  142.                 if (yrs < MINYRS)
  143.                     fatal("Bad -y value: %s", argv[cnt]) ;
  144.                 any++;
  145.                 break ;
  146.  
  147.  
  148.                case '?':                    /* help option */
  149.                  printf(" ira [-options]\n");
  150.                  printf(" IRA Version 2.0 - Calculate Nest-Egg\n");
  151.                  printf(" Options:\n");
  152.                  printf(" -ann.n    : Anual percentage rate\n");
  153.                  printf(" -bnnnn.nn : Beginning balence\n");
  154.                  printf(" -dnnnn.nn : Yearly deposit\n");
  155.                  printf(" -ynn      : Years till retirement\n");
  156.                  printf(" -w        : Put up the window\n");
  157.                  printf(" -?        : display this list.\n");
  158.                 exit(0);
  159.  
  160.                default:
  161.                  usage();
  162.             }
  163.         }
  164.     }
  165.     if (any) put_values();
  166. }
  167.  
  168. usage()
  169. {
  170.     printf("%s -? for help\n",name);
  171.     exit(10);
  172. }
  173.  
  174. fatal(arg1,arg2)
  175. char * arg1,arg2;
  176. {
  177.     fprintf(stderr,arg1,arg2);
  178.     usage();
  179. }
  180.  
  181.  
  182. #ifdef AZTEC_C
  183.  
  184. _wb_parse()  /* keep aztec's paws off it */
  185. {
  186. }
  187. #endif
  188.